/**
 * 
 */
package com.cn.practice.bridge;

/**
 * 桥接模式练习-手机有全面屏手机，OLED屏手机
 * 	手机牌子又小米华为
 * 手机都能打电话，发短信，打游戏
 * 现在需要实现用小米全面屏手机打电话
 * @author zhangyang
 *
 */
public class BridgeTest {
public static void main(String[] args) {
	//实验小米全面屏手机打电话
	//new一个全面屏幕手机
	OLEDPhone oledPhone = new OLEDPhone();
	//new 一个小米全面屏手机
	Xiaomi xiaomi = new Xiaomi(oledPhone);
	xiaomi.call();
}
}

/**
 * 抽象类品牌-聚合了手机接口这样就能调用手机功能
 * @author zhangyang
 *
 */
abstract class Brand{
	private String name;

	Phone phone;

	public Brand(Phone phone) {
		super();
		this.phone = phone;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

class Xiaomi extends Brand{

	/**
	 * @param name
	 * @param phone
	 */
	public Xiaomi(Phone phone) {
		super(phone);
		this.setName("小米");
		// TODO Auto-generated constructor stub
	}
	
	public void call() {
		System.out.println("使用小米手机打电话");
		System.out.println("当前手机名称="+this.getName());
		this.phone.call();
	}
}
/**
 * 实现层接口-手机功能
 * @author zhangyang
 *
 */
interface Phone{
	void call();
	void sendMessage();
	void game();
}

class OLEDPhone implements Phone{

	@Override
	public void call() {
		// TODO Auto-generated method stub
		System.out.println("使用OLED手机打电话");
	}

	@Override
	public void sendMessage() {
		// TODO Auto-generated method stub
		System.out.println("使用OLED手机发短信");
	}

	@Override
	public void game() {
		// TODO Auto-generated method stub
		System.out.println("使用OLED手机打游戏");
	}
	
}